home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / prolog / prlgbnc1.lha / Bench / zebra.pl < prev   
Text File  |  1990-07-13  |  1KB  |  45 lines

  1. % Where does the zebra live?
  2. % Puzzle solution written by Claude Sammut.
  3. main :-
  4.     houses(Houses),
  5.     member(house(red, english, _, _, _), Houses),
  6.     member(house(_, spanish, dog, _, _), Houses),
  7.     member(house(green, _, _, coffee, _), Houses),
  8.     member(house(_, ukrainian, _, tea, _), Houses),
  9.     right_of(house(green,_,_,_,_), house(ivory,_,_,_,_), Houses),
  10.     member(house(_, _, snails, _, winstons), Houses),
  11.     member(house(yellow, _, _, _, kools), Houses),
  12.     Houses = [_, _, house(_, _, _, milk, _), _,_],
  13.     Houses = [house(_, norwegian, _, _, _)|_],
  14.     next_to(house(_,_,_,_,chesterfields), house(_,_,fox,_,_), Houses),
  15.     next_to(house(_,_,_,_,kools), house(_,_,horse,_,_), Houses),
  16.     member(house(_, _, _, orange_juice, lucky_strikes), Houses),
  17.     member(house(_, japanese, _, _, parliaments), Houses),
  18.     next_to(house(_,norwegian,_,_,_), house(blue,_,_,_,_), Houses),
  19.     member(house(_, _, zebra, _, _), Houses),
  20.     member(house(_, _, _, water, _), Houses),
  21.     print_houses(Houses).
  22.  
  23. houses([
  24.     house(_, _, _, _, _),
  25.     house(_, _, _, _, _),
  26.     house(_, _, _, _, _),
  27.     house(_, _, _, _, _),
  28.     house(_, _, _, _, _)
  29. ]).
  30.  
  31. right_of(A, B, [B, A | _]).
  32. right_of(A, B, [_ | Y]) :- right_of(A, B, Y).
  33.  
  34. next_to(A, B, [A, B | _]).
  35. next_to(A, B, [B, A | _]).
  36. next_to(A, B, [_ | Y]) :- next_to(A, B, Y).
  37.  
  38. member(X, [X|_]).
  39. member(X, [_|Y]) :- member(X, Y).
  40.  
  41. print_houses([A|B]) :- !,
  42.     write(A), nl,
  43.     print_houses(B).
  44. print_houses([]).
  45.